home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / jptui35b.zip / DEMO / SRC / JPDEMO.CPP < prev    next >
C/C++ Source or Header  |  1996-10-06  |  16KB  |  636 lines

  1. #include <dos.h>
  2. #include <iostream.h>
  3. #include <stdlib.h>
  4.  
  5. #include "..\..\lib\debug\jptui.h"
  6.  
  7. #define VERSION     3
  8. #define SUB_VERSION 5
  9.  
  10.  
  11. #define VOC_LANGUAGE 1000
  12. #define VOC_HELLO    1001
  13.  
  14. //-- APPLICATION ------------------------------------------------------------
  15.  
  16. TApplication  JPTuiDemo(ENGLISH);
  17.  
  18. //-- MAIN WINDOW ------------------------------------------------------------
  19.  
  20. TWindow       MainWindow          (DIALOG1,
  21.                    2,2,77,22,
  22.                    "JPTUI Demo",
  23.                    INFO_BAR,
  24.                    NOT_MODAL);
  25.  
  26. TPushButton   QuitButton          (&MainWindow,
  27.                    33,19,10,
  28.                    "~Quit",
  29.                    PB_CANCEL);
  30.  
  31. //-- MENUS ------------------------------------------------------------------
  32.  
  33. TMenuBar      MenuBar             (&MainWindow);
  34.  
  35. TMenuItem     MenuItemsMenuItems[]=
  36.  
  37.                   { {"~Unchecked item",
  38.                      LI_TOGGLE,
  39.                      SC_CTRL_F1,
  40.                      "Help about 'Unchecked item' : it's a toggle"},
  41.  
  42.                     {"~Checked item",
  43.                      LI_CHECKED,
  44.                      SC_ALT_F1,
  45.                      "Help about 'Checked item' : it's not a toggle"},
  46.  
  47.                     {SEPARATOR,
  48.                      LI_NOATTR,
  49.                      SC_NONE,
  50.                      ""},
  51.  
  52.                     {"Disabled ~item",
  53.                      LI_TOGGLE|LI_CHECKED|LI_DISABLED,
  54.                      SC_SHIFT_F1,
  55.                      "Help about 'Disabled item'"},
  56.  
  57.                     {NULL,
  58.                      LI_NOATTR,
  59.                      SC_NONE,
  60.                      ""} };
  61.  
  62. TMenu          MenuItemsMenu       (&MenuBar,
  63.                    "~Menu_items",
  64.                    MenuItemsMenuItems);
  65.  
  66.  
  67. TMenuItem     DialogBoxesMenuItems[]=
  68.  
  69.                   { {"~Message Box",
  70.                      LI_NOATTR,
  71.                      SC_CTRL_BACKSPACE,
  72.                      "This menu item opens two message boxes"},
  73.  
  74.                     {"~Input Box",
  75.                      LI_NOATTR,
  76.                      SC_CTRL_HOME,
  77.                      "This menu item opens an input box"},
  78.  
  79.                     {SEPARATOR,
  80.                      LI_NOATTR,
  81.                      SC_NONE,
  82.                      ""},
  83.  
  84.                     {"~File Selection Box",
  85.                      LI_NOATTR,
  86.                      SC_F3,
  87.                      "This menu item opens a file selection box"},
  88.  
  89.                     {NULL,
  90.                      LI_NOATTR,
  91.                      SC_NONE,
  92.                      ""} };
  93.  
  94. TMenu          DialogBoxesMenu      (&MenuBar,
  95.                    "Dialo~g",
  96.                    DialogBoxesMenuItems);
  97.  
  98.  
  99. TMenuItem     OptionMenuItems[]=
  100.                   { {"~Graphical pointer",
  101.                      LI_TOGGLE|LI_CHECKED,
  102.                      SC_CTRL_G,
  103.                      "Select this item to choose the graphical mouse pointer"},
  104.  
  105.                     {SEPARATOR,
  106.                      LI_NOATTR,
  107.                      SC_NONE,
  108.                      ""},
  109.  
  110.                     {"Text mode 80x25, 8 pixels per character",
  111.                      LI_NOATTR,
  112.                      SC_ALT_1,
  113.                      "Sets the text mode to 80x25 with a 8-pixel-wide font"},
  114.  
  115.                     {"Text mode 80x25, 9 pixels per character",
  116.                      LI_NOATTR|LI_CHECKED,
  117.                      SC_ALT_2,
  118.                      "Sets the text mode to 80x25 with a 9-pixel-wide font"},
  119.  
  120.                     {"Text mode 80x28, 8 pixels per character",
  121.                      LI_NOATTR,
  122.                      SC_ALT_3,
  123.                      "Sets the text mode to 80x28 with a 8-pixel-wide font"},
  124.  
  125.                     {"Text mode 80x28, 8 pixels per character",
  126.                      LI_NOATTR,
  127.                      SC_ALT_4,
  128.                      "Sets the text mode to 80x28 with a 9-pixel-wide font"},
  129.  
  130.                     {"Text mode 80x50, 8 pixels per character",
  131.                      LI_NOATTR,
  132.                      SC_ALT_5,
  133.                      "Sets the text mode to 80x50 with a 8-pixel-wide font"},
  134.  
  135.                     {"Text mode 80x50, 9 pixels per character",
  136.                      LI_NOATTR,
  137.                      SC_ALT_6,
  138.                      "Sets the text mode to 80x50 with a 9-pixel-wide font"},
  139.  
  140.                     {"Text mode 132x25 (Cirrus Logic only)" ,
  141.                      LI_NOATTR,
  142.                      SC_ALT_7,
  143.                      "Sets the text mode to 132x25 (use only with a Cirrus Logic card)"},
  144.  
  145.                     {"Text mode 132x43 (Cirrus Logic only)" ,
  146.                      LI_NOATTR,
  147.                      SC_ALT_8,
  148.                      "Sets the text mode to 132x43 (use only with a Cirrus Logic card)"},
  149.  
  150.                     {SEPARATOR,
  151.                      LI_NOATTR,
  152.                      SC_NONE,
  153.                      ""},
  154.  
  155.                     {"Shows available memory",
  156.                      LI_TOGGLE,
  157.                      SC_NONE,
  158.                      "Select this item to display free memory (only possible in debug version)"},
  159.  
  160.                     {NULL,
  161.                      LI_NOATTR,
  162.                      SC_NONE,
  163.                      ""}  };
  164.  
  165. TMenu         OptionMenu          (&MenuBar,
  166.                    "~Options",
  167.                    OptionMenuItems);
  168.  
  169.  
  170. TMenuItem     LanguageMenuItems[]={ {"Multi-~language support",
  171.                      LI_NOATTR,
  172.                      SC_CTRL_L,
  173.                      "This menu item starts a demonstration of multi-language support"},
  174.  
  175.                     {NULL,
  176.                      LI_NOATTR,
  177.                      SC_NONE,
  178.                      ""}  };
  179.  
  180. TMenu         LanguageMenu        (&MenuBar,
  181.                    "La~nguage",
  182.                    LanguageMenuItems);
  183.  
  184. TMenuItem     HelpMenuItems[]=
  185.                   { {"~Help",
  186.                      LI_NOATTR,
  187.                      SC_F1,
  188.                      "This menu item opens two modeless help windows"},
  189.  
  190.                     {NULL,
  191.                      LI_NOATTR,
  192.                      SC_NONE,
  193.                      ""}  };
  194.  
  195. TMenu         HelpMenu              (&MenuBar,
  196.                    "~Help",
  197.                    HelpMenuItems);
  198.  
  199. //-- TAB GROUP --------------------------------------------------------------
  200.  
  201. TTabGroup     TabGroup            (&MainWindow,
  202.                    2,3,72,15,DIALOG2);
  203. //-- BUTTONS ----------------------------------------------------------------
  204.  
  205. TTab          ButtonTab              (&TabGroup,
  206.                    "B~uttons");
  207.  
  208. TLabel        PushButtonLabel     (&ButtonTab,
  209.                    4,3,
  210.                    "Push Button                              :");
  211.  
  212. TPushButton   PushButton          (&ButtonTab,
  213.                    50,3,17,
  214.                    "Push Button ~w");
  215.  
  216. TLabel        CancelPushButtonLabel
  217.                   (&ButtonTab,
  218.                    4,5,
  219.                    "Cancel Push Button (pushed by <esc>)     :  Try Quit button below");
  220.  
  221. TLabel        DefaultPushButtonLabel
  222.                   (&ButtonTab,
  223.                    4,7,
  224.                    "Default Push Button (pushed by <return>  :\nwhen no other button has the focus)");
  225.  
  226. TPushButton   DefaultPushButton   (&ButtonTab,
  227.                    50,7,17,
  228.                    "Push Button ~y",
  229.                    PB_DEFAULT);
  230.  
  231. TLabel        DisabledPushButtonLabel
  232.                   (&ButtonTab,
  233.                    4,10,
  234.                    "Disabled Push Button                     :");
  235.  
  236. TPushButton   DisabledPushButton  (&ButtonTab,
  237.                    50,10,17,
  238.                    "Push Button ~z",
  239.                    PB_NORMAL,
  240.                    DISABLED);
  241.  
  242.  
  243. //-- CHECK BOXES ------------------------------------------------------------
  244.  
  245. TTab          CheckBoxTab      (&TabGroup,
  246.                    "C~heck Boxes");
  247.  
  248. TCheckBox     CheckBox1          (&CheckBoxTab,
  249.                    8,4,20,
  250.                    "Check Box ~1");
  251.  
  252. TCheckBox     CheckBox2          (&CheckBoxTab,
  253.                    8,5,20,
  254.                    "Check Box ~2",
  255.                    CHECKED);
  256.  
  257. TCheckBox     CheckBox3          (&CheckBoxTab,
  258.                    8,7,20,
  259.                    "Check Box ~3",
  260.                    NOT_CHECKED,
  261.                    DISABLED);
  262.  
  263. TRadioGroup   RadioGroup          (&CheckBoxTab,
  264.                    42,2,20,8,"~Radio Buttons");
  265.  
  266. TRadioButton  RadioButton1      (&RadioGroup,
  267.                    1,2,17,
  268.                    "Radio Button ~x");
  269.  
  270. TRadioButton  RadioButton2      (&RadioGroup,
  271.                    1,3,17,
  272.                    "Radio Button ~y",
  273.                    CHECKED);
  274.  
  275.  
  276. TRadioButton  RadioButton3      (&RadioGroup,
  277.                    1,5,17,
  278.                    "Radio Button ~z",
  279.                    NOT_CHECKED,
  280.                    DISABLED);
  281.  
  282. //-- EDIT ZONES -------------------------------------------------------------
  283.  
  284. TTab          EditZoneTab      (&TabGroup,
  285.                    "~Edit Zones");
  286.  
  287. TEditZone     EditZone           (&EditZoneTab,
  288.                    42,1,
  289.                    -40,0,
  290.                    "Edit ~Zone (enter any string) :",
  291.                    25,255,
  292.                    "Enter a long string");
  293.  
  294. TEditZone     DisabledEditZone    (&EditZoneTab,
  295.                    42,2,
  296.                    -40,0,
  297.                    "Di~sabled Edit Zone           :",
  298.                    25,255,
  299.                    "You can't enter anything",
  300.                    DISABLED);
  301.  
  302. TIntegerEditZone
  303.           IntegerEditZone
  304.                   (&EditZoneTab,
  305.                    52,4,
  306.                    -50,0,
  307.                    "~Integer Edit Zone (enter any integer value) :",
  308.                    15,255,
  309.                    0,10);
  310.  
  311. TDecimalEditZone
  312.           DecimalEditZone
  313.                   (&EditZoneTab,
  314.                    52,5,
  315.                    -50,0,
  316.                    "~Decimal Edit Zone (enter any decimal value) :",
  317.                    15,255,
  318.                    -3.2,10.5);
  319.  
  320.  
  321. TTextZone     TextZone            (&EditZoneTab,
  322.                    2,7,
  323.                    68,6,
  324.                    "~Text Zone",
  325.                    255);
  326.  
  327. //-- LISTS ------------------------------------------------------------------
  328.  
  329. TTab          ListTab              (&TabGroup,
  330.                    "~Lists");
  331.  
  332. TListItem     ListBoxItems[]=     {{"Item 1",LI_NOATTR},
  333.                    {"Item 2",LI_NOATTR},
  334.                    {"Item 3",LI_DISABLED},
  335.                    {SEPARATOR,LI_NOATTR},
  336.                    {"Items",LI_NOATTR},
  337.                    {"are not",LI_NOATTR},
  338.                    {"automatically",LI_NOATTR},
  339.                    {"sorted",LI_NOATTR},
  340.                    {NULL,LI_NOATTR}};
  341.  
  342. TListBox      ListBox             (&ListTab,
  343.                   2,2,
  344.                   20,10,
  345.                   "List Bo~x",
  346.                   ListBoxItems);
  347.  
  348.  
  349. TListItem     SortedListBoxItems[]=
  350.                   {{"Item 1",LI_NOATTR},
  351.                    {"Item 2",LI_NOATTR},
  352.                    {"Item 3",LI_DISABLED},
  353.                    {SEPARATOR,LI_NOATTR},
  354.                    {"Items"},
  355.                    {"are",LI_NOATTR},
  356.                    {"automatically",LI_NOATTR},
  357.                    {"sorted",LI_NOATTR},
  358.                    {NULL,LI_NOATTR}};
  359.  
  360.  
  361. TListBox      SortedListBox       (&ListTab,
  362.                   24,2,
  363.                   20,10,
  364.                   "~Sorted List Box",
  365.                   SortedListBoxItems,
  366.                   SORTED);
  367.  
  368. TListItem     CheckListBoxItems[]={{"Any item can be"  ,LI_NOATTR},
  369.                    {"checked and can"  ,LI_CHECKED},
  370.                    {"be a toggle or "  ,LI_TOGGLE},
  371.                    {"not"              ,LI_CHECKED},
  372.                    {SEPARATOR          ,LI_NOATTR},
  373.                    {"It's a toggle"    ,LI_TOGGLE|LI_CHECKED},
  374.                    {"It's not a toggle",LI_NOATTR},
  375.                    {SEPARATOR          ,LI_NOATTR},
  376.                    {"Items can be"     ,LI_TOGGLE},
  377.                    {"toggled by double",LI_TOGGLE},
  378.                    {"clicking or by"   ,LI_TOGGLE},
  379.                    {"pressing <SPACE>" ,LI_TOGGLE},
  380.                    {NULL,LI_NOATTR}};
  381.  
  382. TListBox      CheckListBox       (&ListTab,
  383.                   46,2,
  384.                   23,10,
  385.                   "~Check List Box",
  386.                   CheckListBoxItems);
  387.  
  388. //-- MISC IN MAIN WINDOW-----------------------------------------------------
  389.  
  390. TTab          MiscTab              (&TabGroup,
  391.                   "Mi~sc");
  392.  
  393. TFrame        Frame1              (&MiscTab,
  394.                   2,2,
  395.                   40,11,
  396.                   "This is a ~Frame");
  397.  
  398. TPushButton   GaugeStartButton    (&Frame1,
  399.                   13,2,12,
  400.                   "~Push here");
  401.  
  402. TFrame        Frame2              (&Frame1,
  403.                   2,4,
  404.                   36,6,
  405.                   "This is ~another Frame");
  406.  
  407. TGauge        Gauge               (&Frame2,
  408.                   2,2,32,
  409.                   "Gauge : work in progress");
  410.  
  411.  
  412. TLabel        ComboBoxLabel       (&MiscTab,
  413.                                    45,3,
  414.                                    "Combo-Boxes :");
  415.  
  416. TComboBox     ComboBox1           (&MiscTab,
  417.                    45,6,
  418.                    0,-1,
  419.                    "F~ree string",
  420.                    15,20,
  421.                    "Free String",
  422.                    6,
  423.                    ListBoxItems,
  424.                    STRING_NEEDNT_TO_BE_IN_LIST,
  425.                    NOT_SORTED,
  426.                    ENABLED);
  427.  
  428. TComboBox     ComboBox2           (&MiscTab,
  429.                    45,9,
  430.                    0,-1,
  431.                    "S~tring in list",
  432.                    15,20,
  433.                    "Free String",
  434.                    6,
  435.                    SortedListBoxItems,
  436.                    STRING_MUST_BE_IN_LIST,
  437.                    SORTED,
  438.                    ENABLED);
  439.  
  440. //-- HELP WINDOWS ------------------------------------------------------------
  441.  
  442. TWindow       Help1Window          (HELP,
  443.                   20,13,36,10,
  444.                   "Help 1 : Modeless/movable window",
  445.                   NO_INFO_BAR,
  446.                   NOT_MODAL,
  447.                   MOVABLE);
  448.  
  449.  
  450. TWindow       Help2Window         (ALERT,
  451.                   45,15,36,10,
  452.                   "Help 2 : Modeless/unmovable window",
  453.                   NO_INFO_BAR,
  454.                   NOT_MODAL,
  455.                   NOT_MOVABLE);
  456.  
  457. TLabel        Help1WindowLabel     (&Help1Window,
  458.                    2,2,
  459.                    "You can switch from a\n"\
  460.                    "modeless window to\n"   \
  461.                    "another one by clicking\n"   \
  462.                    "on another window  \n"   \
  463.                    "or by pressing\n"\
  464.                    "ALT-F6");
  465.  
  466. TLabel        Help2WindowLabel     (&Help2Window,
  467.                    2,2,
  468.                    "No help available");
  469.  
  470. void DialogMenuItemClickedCall(PObject /*sender*/,int item_nb,char */*arg*/)
  471. {
  472.   char str[30];
  473.  
  474.   switch (item_nb)
  475.     {
  476.       case 1 : MessageBox("Message Box ","This is a message box",ALERT,MB_ICONSTOP);
  477.            MessageBox("","This is another message box",HELP,MB_ICONINFORMATION|MB_ABORTRETRYIGNORE);
  478.            break;
  479.       case 2 : InputBox("Input Box","Please enter what you want\n"\
  480.                     "(ALT-BACKSPACE to return to\n"\
  481.                     "default value) :",DIALOG1,
  482.             "Default Value",30,str);
  483.            break;
  484.       case 4 : MessageBox("You have chosen : ",
  485.               FileSelectionBox("Load","*.*"),
  486.               DIALOG1);
  487.     }
  488.  
  489. }
  490.  
  491. void SetCirrusLogicMode132x25()
  492. {
  493.   union REGS regs;
  494.  
  495.   regs.x.ax=0x14;
  496.   int86(0x10, ®s, ®s);
  497. }
  498.  
  499. void SetCirrusLogicMode132x43()
  500. {
  501.   union REGS regs;
  502.  
  503.   regs.x.ax=0x54;
  504.   int86(0x10, ®s, ®s);
  505. }
  506.  
  507. void OptionMenuItemClickedCall(PObject /*sender*/,int item_nb,char */*arg*/)
  508. {
  509.   static int old_selected_mode=4;
  510.  
  511.   switch (item_nb)
  512.     {
  513.       case 1 : GraphicalMousePointer(OptionMenu.m_item_is_checked(item_nb));
  514.            break;
  515.  
  516.       case 3 : SetTextMode(TEXTMODE_80x25_8);            break;
  517.       case 4 : SetTextMode(TEXTMODE_80x25_9);             break;
  518.       case 5 : SetTextMode(TEXTMODE_80x28_8);            break;
  519.       case 6 : SetTextMode(TEXTMODE_80x28_9);            break;
  520.       case 7 : SetTextMode(TEXTMODE_80x50_8);            break;
  521.       case 8 : SetTextMode(TEXTMODE_80x50_9);            break;
  522.       case 9 : SetUserTextMode(SetCirrusLogicMode132x25); break;
  523.       case 10: SetUserTextMode(SetCirrusLogicMode132x43); break;
  524.  
  525.       case 12: if (OptionMenu.m_item_is_checked(item_nb))
  526.          DEBUG_SHOW_MEMORY();
  527.            else
  528.          DEBUG_HIDE_MEMORY();
  529.            break;
  530.  
  531.     }
  532.  
  533.   if ((item_nb>=3) && (item_nb<=10))
  534.     {
  535.       OptionMenu.m_uncheck_item(old_selected_mode);
  536.       old_selected_mode=item_nb;
  537.       OptionMenu.m_check_item(old_selected_mode);
  538.     }
  539. }
  540.  
  541. void LanguageMenuItemClickedCall(PObject /*sender*/,int item_nb,char */*arg*/)
  542. {
  543.   switch (item_nb)
  544.     {
  545.       case 1 : if (MessageBox(GetString(VOC_LANGUAGE),
  546.                   GetString(VOC_HELLO),
  547.                   DIALOG1,MB_ICONEXCLAMATION|MB_OKCANCEL)
  548.            ==CANCEL_BUTTON)
  549.          break;
  550.  
  551.            LoadVocabulary(GERMAN);
  552.  
  553.            if (MessageBox(GetString(VOC_LANGUAGE),
  554.                   GetString(VOC_HELLO),
  555.                   DIALOG1,MB_ICONEXCLAMATION|MB_OKCANCEL)
  556.            ==CANCEL_BUTTON)
  557.          break;
  558.  
  559.            LoadVocabulary(FRENCH);
  560.  
  561.            if (MessageBox(GetString(VOC_LANGUAGE),
  562.                   GetString(VOC_HELLO),
  563.                   DIALOG1,MB_ICONEXCLAMATION|MB_OKCANCEL)
  564.            ==CANCEL_BUTTON)
  565.          break;
  566.     }
  567.  
  568.   LoadVocabulary(ENGLISH);
  569. }
  570.  
  571. void HelpMenuItemClickedCall(PObject /*sender*/,int /*item_nb*/,char */*arg*/)
  572. {
  573.   Help1Window.m_close();
  574.   Help1Window.m_open();
  575.   Help2Window.m_close();
  576.   Help2Window.m_open();
  577. }
  578.  
  579. void GaugeStartButtonPressedCall(PObject /*sender*/, char */*arg*/)
  580. {
  581.  
  582.   long value=Gauge.m_get_value();
  583.   int inc=(value==0)?1:-1;
  584.  
  585.   value+=inc;
  586.  
  587.   while ((value>=0) && (value<=100))
  588.     {
  589.       Gauge.m_set_value(value);
  590.       JPRefresh();
  591.       delay(10);
  592.       value+=inc;
  593.     }
  594. }
  595.  
  596. void QuitCall(PObject /*sender*/,char */*arg*/)
  597. {
  598.   JPStop();
  599. }
  600.  
  601. int main(int argc, char* argv[])
  602. {
  603.   if (argc>1)
  604.     if (!strcmp(argv[1],"/?"))
  605.       {
  606.     cout << "This is a demo of what you can do with JPTUI " << VERSION << "." << SUB_VERSION << "\n" \
  607.         "(Jeepy Text User Interface).\n\n"   \
  608.         "Simply type JPDEMO to run it.\n\n";
  609.     exit(EXIT_SUCCESS);
  610.       }
  611.  
  612.   JPInit();
  613.  
  614.   MainWindow.m_set_close_button_pressed_callback(QuitCall,"");
  615.   QuitButton.m_set_pressed_callback(QuitCall,"");
  616.  
  617.   DialogBoxesMenu.m_set_item_clicked_callback(DialogMenuItemClickedCall,"");
  618.   OptionMenu.m_set_item_clicked_callback(OptionMenuItemClickedCall,"");
  619.   LanguageMenu.m_set_item_clicked_callback(LanguageMenuItemClickedCall,"");
  620.   HelpMenu.m_set_item_clicked_callback(HelpMenuItemClickedCall,"");
  621.  
  622.   GaugeStartButton.m_set_pressed_callback(GaugeStartButtonPressedCall,"");
  623.  
  624.   TextZone.m_insert_text("CTRL-Y to delete a line\n" \
  625.             "CTRL-INS,SHIFT_DEL & SHIFT_INSERT to copy, cut and paste\n\n"\
  626.             "Type whatever you want and as much as you want...");
  627.  
  628.   MainWindow.m_open();
  629.  
  630.   JPRun();
  631.  
  632.   exit(EXIT_SUCCESS);
  633.   return(0);
  634.  
  635. }
  636.